package com.hspedu.extend_;

public class Sub extends Base {
	public Sub()
	{
		//创建子类对象时,不管使用子类的哪个构造器,默认情况下都去调用父类的构造器
		//如果父类没有提供无参构造器,则必须在子类的构造器中用super()指定使用父类的哪个构造器完成对父类的初始化
		super("smith",10);
		System.out.println("子类sub()...");
	}
	
	public Sub(String name)
	{
		super("tom",30);
		System.out.println("子类sub(String name)...");
	}
	
	public Sub(String name,int age)
	{
		//1.调用父类的无参构造器
		//super();//或者不写
		//2.调用父类的Base(String name)构造器
		//super("hsp");
		//3.调用Base(String name, int age)构造器
		super("king",20);
		
		//细节: super()和this()在使用时,都是必须放在构造器的第一行
		//细节: 因此两个方法不能同时存在于一个构造器
		System.out.println("子类sub(String name,int age))...");
	}
	
	public void sayOk()
	{
		//非私有的属性和方法可以在子类中直接访问
		//私有的属性和方法不可以在子类中访问
		System.out.println(n1 + n2 + n3);
		//System.out.println(n1 + n2 + n3 + n4); //私有不能访问
		test100();
		test200();
		test300();
		//test400(); //私有不能访问
		
		//要通过父类提供的公共方法去访问
		System.out.println("n4=" + getN4());
		callTest400();
	}
}
